Modern communication networks allow data to be transferred between electronic devices. Specifically, a source electronic device, such as a computer or a telephone, starts the transfer process by passing the data to the network. The network transports the data from the source device to a destination device, where the data may then be used as desired. The elapsed time between transmission of the data by the source device and receipt of the data by the destination device is dependent in part on the amount of bandwidth available on the network. Specifically, if there is a relatively large amount of available bandwidth, then the data may reach the destination device relatively quickly. However, if there is a relatively small amount of available bandwidth, then the data may take considerably longer to reach the destination device.
One of the problems with existing networks is that it is difficult to predict the amount of network bandwidth that is available or required at any given time. From the customer side, it is difficult to predict the amount of bandwidth that will be available when data is transmitted. Such unpredictability in available bandwidth leads to an unpredictability in the transmission time, which causes customer frustration. From the provider side, it is difficult to predict when customers will request network bandwidth, as well as how much bandwidth they will request. Such unpredictability in required bandwidth may cause a shortage of bandwidth at particular times, which causes provider frustration.